package com.sumer.juc;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 多线程下ArrayList是不安全的  测试
 */
public class ListThreadTest {

    public static void main(String[] args) {
//        List<String> list = new ArrayList<>(); // 不安全
//        List<String> list = new LinkedList<>(); // 不安全
//        List<String> list = new Vector<>(); // 安全
//        List<String> list = new CopyOnWriteArrayList<>(); // 安全
        List<String> list = Collections.synchronizedList(new ArrayList<>()); // 安全

        for (int i = 0; i < 10000; i++) {
            new Thread(()->{
                list.add(UUID.randomUUID().toString().substring(0,5));
            },String.valueOf(i)).start();
        }
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(list.size());
    }
}
